﻿using System;
using System.Text.Json.Serialization;

namespace TowerCraneMonitorClient.NetClient.EventFault
{
    /// <summary>
    /// 故障事件
    /// </summary>
    public class Entity : NetClient.Entity
    {
        /// <summary>
        /// 事件类型
        /// </summary>
        public EventType EventType { get; set; }

        /// <summary>
        /// 事件发生的时间。Json 时间戳格式
        /// </summary>
        [JsonPropertyName("eventTime")]
        public long EventTimeStamp => EventTime.ToUnixTimeStamp().ToLong();

        /// <summary>
        /// 事件发生的时间。数据库时间格式
        /// </summary>
        [JsonIgnore]
        public DateTime EventTime { get; set; }

        /// <summary>
        /// 事件信息的数据。
        /// </summary>
        public EventMessage EventMessage { get; set; }

        /// <summary>
        /// 基于该对象生成 EventFault.Req 报文
        /// </summary>
        /// <param name="errorMessage">失败时返回错误信息，成功时返回 null</param>
        /// <returns>成功时返回 EventFault.Req 对象，失败时返回 null</returns>
        public new Req ToReq() => new Req(this);
    }
}
